package com.hw.protocol.tool.config;

/**
 * @author : lihy
 * @date : 2023/11/28 8:49
 * description:
 */

public enum ZbProtocolEnum {

    /**
     * 认证第一步请求
     */
    REQ_LOGIN_ST(1, "01"),
    /**
     * 认证第一步响应
     */
    RESP_LOGIN_ST(2, "02"),
    /**
     * 认证第二步请求
     */
    REQ_LOGIN_ND(3, "03"),
    /**
     * 认证第二步响应
     */
    RESP_LOGIN_ND(4, "04"),
    /**
     * 认证第二步响应(带密钥)
     */
    RESP_LOGIN_ND_PD(5, "05"),
    /**
     * 上行（无续传）
     */
    REQ_UPLOAD_NO_CONT(1, "01"),
    /**
     * 上行（密文+mac）
     */
    REQ_UPLOAD_CRYP_MAC(97, "61"),
    /**
     * 下行（密文+mac）
     */
    RESP_UPLOAD_CRYP_MAC(98, "62"),
    /**
     * 挂起（密文+mac）
     */
    RESP_HANDUP_CRYP_MAC(101, "65"),
    /**
     * 响应请求
     */
    ANSWER_READ(132, "84"),
    ANSWER_WRITE(133, "85"),
    /**
     * 为定义指令
     */
    UNKNOWN(0, "0");

    private int cmd;
    private String code;

    ZbProtocolEnum(int cmd, String code) {
        this.cmd = cmd;
        this.code = code;
    }

    public int getCmd() {
        return cmd;
    }

    public String getCode() {
        return code;
    }

    public static ZbProtocolEnum getProtocol(int cmd){
        for (ZbProtocolEnum value : ZbProtocolEnum.values()) {
            if(value.cmd == cmd){
                return value;
            }
        }
        return UNKNOWN;
    }
}
